1 package org.thema.scriptware.digester;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.util.HashMap;
6 import java.util.Map;
7 import org.apache.commons.digester.Digester;
8
9 public class DigesterPlugin {
10 private InputStream file;
11 HashMap plugins;
12
13 public DigesterPlugin() {
14 }
15
16 public DigesterPlugin(InputStream file) {
17 this.file = file;
18 plugins = new HashMap();
19 }
20
21 public void digest() throws IOException,org.xml.sax.SAXException {
22 try {
23 Digester digester = new Digester();
24 digester.push(this);
25
26 digester.addObjectCreate("plugins/plugin", Plugin.class);
27 digester.addSetProperties("plugins/plugin");
28
29 digester.addObjectCreate("plugins/plugin/script", Script.class);
30 digester.addSetProperties("plugins/plugin/script");
31 digester.addBeanPropertySetter("plugins/plugin/script/sql");
32 digester.addSetNext("plugins/plugin/script","addScript");
33
34
35
36
37 digester.addObjectCreate("plugins/plugin/script/params/param", Param.class);
38 digester.addSetProperties("plugins/plugin/script/params/param");
39 digester.addSetNext("plugins/plugin/script/params/param","addParam");
40
41 digester.addSetNext( "plugins/plugin", "addPlugin" );
42
43 DigesterPlugin dp = (DigesterPlugin) digester.parse(file);
44
45 } catch (IOException e) {
46 throw new IOException("Erro de I/O ao utilizar o arquivo!");
47 } catch (org.xml.sax.SAXException ex) {
48 throw new org.xml.sax.SAXException("Erro realizando parse de arquivo plugins.xml!");
49 }
50 }
51
52 public void addPlugin(Plugin plugin ) {
53 plugins.put(plugin.getName(),plugin);
54 }
55 public Map getPlugins(){
56 return plugins;
57
58 }
59 }